package cn.sccdlg.lambda.demo03.stream;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author RaoShuang
 * @emil 991207823@qq.com
 * @date 2020/6/7 17:33
 * Stream概述：Stream 是对集合（Collection）对象功能的增强，
 * 它专注于对集合对象进行各种非常便利、高效的聚合操作（aggregate operation），
 * 或者大批量数据操作 (bulk data operation)
 * Stream API 借助于Lambda表达式，极大的提高编程效率和程序可读性。
 */
public class StreamTest {
    public static void main(String[] args) {
        // 1. 添加测试数据：存储多个账号的列表
        List<String> accounts = new ArrayList<String>();
        accounts.add("tom");
        accounts.add("jerry");
        accounts.add("beita");
        accounts.add("shuke");
        accounts.add("damu");

        // 1.1. 业务要求：长度大于等于5的有效账号
        for (String account : accounts) {
            if (account.length() >= 5) {
                System.out.print("有效账号："  + account + "  ");
            }
        }
        System.out.println("************");
        // 1.2. 迭代方式进行操作
        Iterator<String> it = accounts.iterator();
        while(it.hasNext()) {
            String account = it.next();
            if (account.length() >= 5) {
                System.out.print("it有效账号：" + account +"  ");
            }
        }
        System.out.println("************");
        // 1.3. Stream结合lambda表达式，完成业务处理
        List validAccounts = accounts.stream().filter(s->s.length()>=5).collect(Collectors.toList());
        System.out.println(validAccounts);
    }
}
